"use strict";

var _main = require("../lib/main.js");

/**
 * 任务队列，常规调用
 */
new _main.task.Task({
	run: function run() {
		//具体的任务代码，这里的count为Task的内部属性：执行次数;
		console.log("run 1 ", this.count);

		return {
			success: this.count >= 3 //返回成功失败的标志
		};
	},

	delay: 1000, //延迟多少ms执行
	retry: 5, //失败时重试的次数
	interval: 2000 //两次执行的间隔ms
});

/**
 * 任务队列，promise形式的调用
 */
new _main.task.Task({
	run: async function run() {
		//具体的任务代码，这里的count为Task的内部属性：执行次数;
		console.log("run 2 ", this.count);
		return {
			success: this.count >= 3, //返回成功失败的标志
			data: "task 2 " + this.count
		};
	},

	delay: 1000,
	retry: 5,
	interval: 2000
}).then(function (data) {
	//处理run 1返回的数据data
	console.log("result 2", data);

	//如果有第二个任务，则创建第二个任务
	return new _main.task.Task({
		run: async function run() {
			console.log("run 3 ", this.count);
			return {
				success: this.count >= 2,
				data: "task 3 " + this.count
			};
		},

		delay: 1000,
		retry: 5,
		interval: 2000
	});
}).then(function (data) {
	//处理run 2返回的数据data
	console.log("result 3 ", data);
});

// 加密(增加数据时效性)示例,加密后会给参数增加一个checkcode，加密后默认20s有效时间
var salt = "abc";
var params = {
	name: "lili",
	age: 20
};
_main.encrypts.encrypt(params, salt);
console.assert(_main.encrypts.isDecryptPassed(params, salt) == true, "加密验证失败");
setTimeout(function () {
	// 超过20秒后验证失败
	console.assert(_main.encrypts.isDecryptPassed(params, salt) == false, "加密验证超时后失败");
}, 21000);

//时间格式化
console.log(_main.date.format(new Date("2022-10-14T02:34:43.000Z")));
//时间加减日月年
console.assert(_main.date.offset(new Date("2022-10-14T02:34:43.000Z"), 20, 2, 1).toISOString() == "2024-01-03T02:34:43.000Z", "时间加减日月年");

//保留小数
console.assert(_main.number.carry(10.5555, 2) == 10.56, "保留小数错误", _main.number.carry(10.5555, 2));
console.assert(_main.number.carry(10.5555, 2, Math.floor) == 10.55, "保留小数错误", _main.number.carry(10.5555, 2, Math.floor));
//数值使用英文进位，比如：1000 ==》 1k
console.assert(_main.number.scientific(20.21) == '20', "数值使用英文进位1");
console.assert(_main.number.scientific(1000) == '1K', "数值使用英文进位2");
console.assert(_main.number.scientific(561235.1566) == '561K', "数值使用英文进位3");
console.assert(_main.number.scientific(5946151.5555, 2, Math.floor) == '5.94M', "数值使用英文进位4");